package org.huangrui.spark.scala.core.rdd.operate.action

import org.apache.spark.{SparkConf, SparkContext}


/**
 * @Author hr
 * @Create 2024-10-18 10:10
 */
object Spark03_Operate_Action_4 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sc = new SparkContext(conf)
    val rdd = sc.parallelize(List(4, 2, 3, 1), 2)
    // 单点循环：1, 2, 3, 4
    rdd.collect().foreach(println)
    println("-------------------------")
    // 分布式循环
    // TODO foreach执行效率低，但是占内存比较小。
    rdd.foreach(println)
    println("-------------------------")
    // TODO foreachPartition执行效率高，但是依托于内存大小。
    rdd.foreachPartition((x: Iterator[Int]) => x.foreach(println))

    sc.stop()
  }
}
